Design System

AquaX — Current UI Design Baseline

Document Info
Version 1.0
Status Draft — Current Implementation Baseline
Created Date 2026-09-17
Last Updated 2026-09-17
Owner Product Design & Frontend
Reviewers Web, Mobile, Product, QA
Source Code Reviewed web/src/assets/styles/*, web/src/main.tsx, web/src/core/components/*, web/src/core/constants/user-management-styles.ts, mobile/src/core/theme/*, mobile/src/core/components/*, mobile/src/core/navigation/*, representative web/mobile feature screens

Implementation alignment note: This document describes the design system currently used in code. It is not a future visual redesign. Where web and mobile differ, the difference is called out explicitly so future cleanup can standardize tokens without breaking current UI.


Table of Contents

  1. Purpose And Scope
  2. Current Technology Stack
  3. Design Principles In Current Code
  4. Brand And Visual Identity
  5. Color System
  6. Typography
  7. Spacing, Radius, Shadow And Motion
  8. Layout System
  9. Components
  10. Navigation Patterns
  11. Status, Severity And Role Visuals
  12. Forms And Inputs
  13. Data Display
  14. Feedback, Loading And Empty States
  15. Icons And Assets
  16. Responsive And Mobile Behavior
  17. Accessibility Baseline
  18. Implementation Guidelines
  19. Current Design Debt
  20. Traceability
  21. Document History

1. Purpose And Scope

This document defines the UI design baseline for AquaX based on the current web and mobile codebase.

It covers:

  • design tokens currently present in web and mobile;
  • common colors, typography, spacing, radius, shadow and motion;
  • shared component patterns used by the web dashboard and mobile app;
  • role navigation and information architecture patterns;
  • status/severity/role visuals;
  • known inconsistencies that should be fixed in future design-system cleanup.

It does not introduce new product requirements. Feature scope remains governed by PRD, BRD, SRS, Product Backlog and Permission Matrix.


2. Current Technology Stack

Surface Stack Design Approach
Web React, Vite, Ant Design, Tailwind CSS utilities, lucide-react icons. AntD components wrapped or styled with Tailwind utility classes and CSS variables.
Mobile Expo React Native, React Navigation bottom tabs, Ant Design React Native, lucide-react-native icons. StyleSheet.create per screen/component, with a small core/theme provider and many hardcoded screen-level tokens.
Shared Brand AquaX logo asset. Used in web sidebar brand and mobile header/loading screen.

Primary files:

Area File
Web CSS variables web/src/assets/styles/variables.css
Web global CSS/motion web/src/assets/styles/tailwind.css, web/src/main.scss
Web AntD provider web/src/main.tsx
Web reusable layout/table/stats web/src/core/components/AppShell/*, AquaTable, StatsGrid
Web form constants web/src/core/constants/user-management-styles.ts
Mobile theme provider mobile/src/core/theme/theme.tsx
Mobile theme tokens mobile/src/core/theme/colors.ts, spacing.ts, typography.ts, layout.ts
Mobile reusable shell mobile/src/core/navigation/shared/RoleTabNavigator.tsx
Mobile reusable components mobile/src/core/components/AppButton.tsx, Screen.tsx, AppToast.tsx, AppProviders.tsx

3. Design Principles In Current Code

Principle Current Expression
Operational clarity Dashboards prioritize tables, cards, filters, alert/status badges and scoped operational data.
Calm enterprise UI Web uses white cards, muted green-tinted backgrounds, teal primary actions and low-shadow surfaces.
Field usability Mobile uses large cards, bottom tabs, bold labels, high-contrast status colors and pull-to-refresh patterns.
Role-specific navigation Web sidebar and mobile bottom tabs expose screens by role.
Status-first scanning Health, severity, role and active/inactive states use color badges/pills with short labels.
Implementation-first consistency Reusable wrappers exist, but many screens still define local styles; this doc records actual usage.

4. Brand And Visual Identity

Token / Asset Current Usage
Product name AquaX appears in web sidebar and mobile app header/login/loading surfaces.
Logo Web uses AquaXLogo; mobile uses assets/brand/aquax-logo.png and BrandLogo.
Brand feel Aquaculture/operations: teal/green primary, white cards, muted slate text, orange/danger status accents.

Brand surfaces:

  • Web sidebar brand: logo 44px, title AquaX, subtitle Hệ thống quản trị.
  • Mobile app header: dark teal header #005D4E, logo container 36x36, brand text 20px / 700.
  • Mobile launch loading: large logo 132px, white circular logo surface, green pulse/progress treatment.

5. Color System

5.1 Web Canonical CSS Variables

Web currently has the clearest token layer in variables.css.

Token Value Usage
--aquax-color-primary #006b5f Main web brand/action color.
--aquax-color-primary-container #008378 Accent/container and chart color.
--aquax-color-secondary #006a63 Secondary teal.
--aquax-color-tertiary #924628 Warning/brown-orange accent.
--aquax-color-surface #f5faf8 Muted page/table/filter background.
--aquax-color-background #fff Default white background/card.
--aquax-color-danger #b00000 Web danger state.
--aquax-color-danger-container #f6dada Danger badge background.
--aquax-color-text-primary #111827 Main text.
--aquax-color-text-secondary #4b5563 Secondary text.
--aquax-color-border-subtle #dde7e3 Subtle borders.

Web also aliases these into Tailwind-friendly variables such as --primary, --muted, --border, --foreground, --destructive and --radius.

5.2 Mobile Theme Tokens

Mobile has a core/theme provider:

Token Light Dark Note
primary #1769E0 #1D7AFC Currently blue and not fully aligned with most AquaX mobile screens.
background #F7F9FC #08111F Used by Screen.
surface/card #FFFFFF #0D1728 / #111C2E Used by Ant Design React Native provider and reusable components.
text #101828 #F4F7FB Main theme text.
muted #667085 #9AA7B8 Secondary text.
danger #D92D20 #FF6B6B Error/danger.
success #039855 #2DBE7E Success.
warning #DC6803 #F5A524 Warning.

Current gap: Most production mobile screens use hardcoded Aqua/teal values such as #00796B, #006B5F, #007C6D, #005D4E, while core/theme.primary remains blue. Future cleanup should align core/theme to the AquaX teal palette before increasing token usage.

5.3 Current Palette From Code Usage

The following colors appear frequently and should be treated as current practical palette:

Role Web Mobile Notes
Primary teal #006B5F, #087A70, #00796F #00796B, #006B5F, #007C6D, #007565 Main brand/action color.
Dark teal/header #006A63 #005D4E, #004C3F Mobile header/login hero.
Surface/muted #F5FAF8, #F6FBF9, #F3FAF7 #F8FAFC, #F1F5F9, #EEF6F3 Page backgrounds, cards, empty/missing data boxes.
Border #DDE7E3, #D7E6E1, #E5E7EB #E2E8F0, #E5E7EB, #DDE6EA Inputs, cards, tables.
Text strong #111827 #0F172A, #101828, #1E293B Titles/body strong.
Text secondary #4B5563, #6B7280 #64748B, #475569, #667085 Body/meta text.
Text muted #9CA3AF #94A3B8, #99A1AF, #CBD5E1 Placeholder/disabled/meta.
Danger #B00000, #EF4444, #D50000 #D60000, #C40000, #EF4444, #D92D20 Alerts, inactive, errors.
Warning #924628, #D97706, #F59E0B #A44F2A, #B65C1E, #FF9500 Warning states, technician/stat tones.
Success #006B5F, #10B981 #008C80, #039855, #00796B Good/online/active states.
Role accent #8B5CF6, #3B82F6 #7C3AED, #1D4ED8, #C2410C Role badges/avatars.

5.4 Status Color Guidance

State Text/Icon Background Current Usage
Good / online / active #008C80 or #006B5F #DFF7F3, #E8F5F3, #E6F7F4 Pond health, active users, online devices.
Warning / attention #A44F2A or #924628 #FFE9DE, #FEF3E8, #FFF7ED Pond warning, warning stats.
Danger / critical #D60000 or #B00000 #FFE8E8, #F6DADA, #FEF2F2 Critical alerts, inactive, error.
Info / neutral #475569, #64748B #F8FAFC, #F3F6FA Secondary metadata and neutral pills.

6. Typography

6.1 Web Typography

Token Value
Font family Inter, ui-sans-serif, system-ui, sans-serif
Base font size 16px
Display 48px
H1 32px
H2 24px
Body 16px
Label 12px
Heading line-height 1.25
Body line-height 1.5

Common web usage:

  • Page title: 26px to 28px, bold, slate-950.
  • Page subtitle: 16px to 18px, slate-600.
  • Table header: 12px to 13px, bold, uppercase/tracking-wide.
  • Card stat value: 30px, bold.
  • Form label: 14px, medium.
  • Input text: 16px.

6.2 Mobile Typography

Mobile theme exposes:

Token Value
title 28px / 34px / 700
body 16px / 24px
caption 13px / 18px

Common mobile screen usage:

Element Current Usage
Screen title 22-28px, weight 800-900.
Card title 16-18px, weight 800-900.
Body/meta 13-15px, weight 500-700.
Pill/badge text 11-13px, weight 800-900.
Tab label 10-12px, weight 700-800.
Button text 15-16px, weight 700-900.

Guideline: Use font weights intentionally. Current mobile code often uses 900; use it for labels/status/title emphasis, not long body text.


7. Spacing, Radius, Shadow And Motion

7.1 Spacing

Mobile core spacing:

Token Value
xs 4
sm 8
md 12
lg 16
xl 24
xxl 32

Web spacing mostly uses Tailwind utilities:

Pattern Current Usage
Page padding px-4 py-5, sm:px-6, lg:px-5 lg:py-6, xl:px-6.
Card/grid gap gap-4, gap-3, gap-2.
Table cells px-4 py-4, xl:px-5 xl:py-5.
Form controls 40px, 46px, 50px height depending context.

Mobile layout constants:

Token Value
SCREEN_HORIZONTAL_PADDING Dynamic: min 14, max 20, roughly 4.5vw.
SCREEN_BOTTOM_PADDING 32.

7.2 Radius

Web variables:

Token Value
--aquax-radius-sm 6px
--aquax-radius-md 8px
--aquax-radius-lg 12px
--aquax-radius-pill 999px

Current usage:

  • Web cards/tables/buttons/forms commonly use rounded-lg (8px).
  • Mobile cards vary from 8px to 16px.
  • Pills/badges use 999px.
  • Mobile launch/logo and avatars use larger circular radii.

7.3 Shadow

Surface Current Pattern
Web cards/tables --aquax-shadow-card: 0 1px 2px #1118270f, 0 4px 12px #1118270a.
Web sidebar mobile top 0_8px_24px rgba(15,23,42,0.05).
Mobile cards shadowColor #0F172A, opacity 0.08-0.14, radius 7-14, elevation 2-6.
Mobile logo surface shadowColor #1E6B45, radius 28, opacity 0.1.

7.4 Motion

Web motion tokens:

Token Value
--aquax-motion-fast 140ms
--aquax-motion-base 200ms
--aquax-motion-slow 280ms
--duration-exit 150ms
--duration-enter 210ms
--duration-move 400ms

Current web supports:

  • page settle animation;
  • notification popover animation;
  • view-transition animations;
  • reduced-motion override.

Mobile supports:

  • launch loading progress loop (1400ms);
  • logo pulse (1100ms);
  • standard React Navigation transitions.

8. Layout System

8.1 Web Layout

Current web application shell:

Element Current Behavior
Root layout Full-height AntD Layout, background --muted.
Sidebar desktop Fixed left sidebar, 250px expanded (lg:w-62.5), 72px collapsed (lg:w-18).
Sidebar mobile Sticky top bar with mobile menu and notification bell.
Content Scrollable page area on desktop, max width max-w-420 when sidebar expanded.
Workspace mode Sidebar forced compact; content may become full-height/no padding.

Web page composition:

  1. Optional page header with title/subtitle/actions.
  2. Filter/control row.
  3. Stats grid or summary cards.
  4. Table/list/detail cards.
  5. Drawer/modal for contextual detail where needed.

8.2 Mobile Layout

Mobile shell:

Element Current Behavior
Root providers Gesture handler, React Query, Safe Area, Theme Provider, AntD RN Provider, Toast.
Header Role tab navigator header with dark teal background and brand.
Bottom tabs Role-specific tabs with lucide icons and labels.
Screen content Usually ScrollView, SCREEN_HORIZONTAL_PADDING, pull-to-refresh in data-heavy screens.
Hidden screens Detail/create/edit routes registered inside tab navigators with hidden tab item.

Mobile tab bar:

  • Active color: #00796B.
  • Inactive color: #596274.
  • Compact mode when width <390 or tabs.length >= 5.
  • Height: 58/64px + safe-area bottom adjustment.
  • Active indicator: teal top line.

9. Components

9.1 Web Reusable Components

Component Source Current Design
AppShell web/src/core/components/AppShell Sidebar + content shell, role-filtered navigation, notification bell and user menu.
AquaTable web/src/core/components/AquaTable AntD Table wrapped in borderless rounded card with skeleton rows and updating banner.
StatsGrid web/src/core/components/StatsGrid Responsive stat cards, default/primary/warning/danger tones.
DetailInfoRow web/src/core/components/DetailInfoRow Detail row display pattern.

Web component conventions:

  • Prefer AntD for Button, Card, Table, Form, Input, Select, Drawer, Modal, Tag, Alert, Skeleton, Empty.
  • Use Tailwind utilities for layout, spacing and specific overrides.
  • Use CSS variables for primary, border, muted and shadow when possible.
  • Use lucide-react icons in navigation/action buttons.

9.2 Mobile Reusable Components

Component Source Current Design
AppProviders mobile/src/core/components/AppProviders.tsx App provider stack, AntD RN theme bridge, launch loading screen.
Screen mobile/src/core/components/Screen.tsx Safe-area aware scroll/non-scroll screen wrapper.
AppButton mobile/src/core/components/AppButton.tsx AntD RN Button wrapper with primary/secondary/ghost variants.
AppToast mobile/src/core/components/AppToast.tsx Custom top toast cards for success/error/info.
BrandLogo mobile/src/core/components/BrandLogo.tsx Logo rendering for mobile header/brand areas.
RoleTabNavigator mobile/src/core/navigation/shared/RoleTabNavigator.tsx Shared role-based bottom tab shell and header.

Mobile component conventions:

  • Use Pressable for tappable custom cards/list rows.
  • Use StyleSheet.create locally for screen and component styling.
  • Use lucide-react-native for icons.
  • Use ActivityIndicator, RefreshControl, custom empty/error text and bottom sheets/modals for feedback.

10. Navigation Patterns

10.1 Web Navigation

Web uses APP_SHELL_NAV_ITEMS with role filters.

Current route groups:

Role Current Web Navigation
OWNER Tổng quan giám sát.
ADMIN Quản lý tài khoản, Nông trại, Ao nuôi, Thiết bị IoT, Báo cáo, Báo hỏng, Nhật ký hoạt động, Thông báo, Cài đặt.
MANAGER / TECHNICIAN Not broadly exposed in current web shell.

Navigation item design:

  • Height 44px.
  • Rounded 8px.
  • Icon 20px.
  • Text 14px / 600.
  • Active background currently bg-gray-300.
  • Hover background slate-200.

10.2 Mobile Navigation

Mobile uses role-specific bottom tab configs:

Role Current Tabs
ADMIN Người dùng, Trang trại, Ao nuôi, Cá nhân.
OWNER Trang chủ, Trang trại, Trợ lý AI, Nhật ký, Cá nhân.
TECHNICIAN Technician-specific home/incidents/notifications/profile flows.
MANAGER Manager navigator exists, scope/features are limited.

Guidelines:

  • Keep tab labels short enough for compact mode.
  • Use icons from lucide-react-native.
  • Register create/detail/edit screens as hidden tabs when they belong inside the role flow.
  • Notification bell in header is currently available for OWNER and TECHNICIAN.

11. Status, Severity And Role Visuals

11.1 Health / Severity

Current mobile pond health colors:

Health Accent Background Text
good #008C80 #DFF7F3 #00796B
warning #A44F2A #FFE9DE #8F3E1D
danger #D60000 #FFE8E8 #D60000

Ticket severity/status currently uses config-driven chips in mobile/src/core/constants/ticket-configs.ts and AntD tags/buttons on web.

Guidelines:

  • Pair color with text/icon, not color alone.
  • Use short Vietnamese labels: Tốt, Cảnh báo, Nguy hiểm, Hoạt động, Vô hiệu hóa.
  • Critical/danger should use red text and a light red background; avoid muted-only critical indicators.

11.2 Role Visuals

Mobile admin user cards currently use:

Role Avatar / Badge Tone Label
ADMIN Purple Admin
MANAGER Orange Quản lý
TECHNICIAN Blue Kỹ thuật viên
OWNER Purple/lavender Chủ hộ

Web role labels:

Role Label
ADMIN Admin
MANAGER Quản lý
TECHNICIAN Kỹ thuật viên
OWNER Chủ hộ

12. Forms And Inputs

12.1 Web Forms

Current web form patterns:

Element Current Style
Text inputs Height 40px, background #f5faf8, border #dde7e3, radius 8px, text 16px.
Filter controls Height 46px desktop/mobile, 50px large; background #f6fbf9, border #d7e6e1.
Select AntD Select with custom selector height/radius/background overrides.
Labels 14px, weight 500, line-height 20px.
Helper text 12px, line-height 20px, color #4b5563.
Required mark Red.

Guidelines:

  • Use existing constants from user-management-styles.ts for user-management forms.
  • Prefer AntD validation and error states.
  • Keep input heights stable to prevent layout shift.
  • Use Vietnamese labels and errors consistently.

12.2 Mobile Forms

Current mobile form patterns:

  • Inputs usually have light background #F8FAFC or white.
  • Border color often #E2E8F0.
  • Radius usually 12-14px.
  • Placeholder/muted color #94A3B8.
  • Error color #D60000 or #EF4444.
  • Submit buttons use teal background and white bold text.

Guidelines:

  • Use large touch targets, ideally 44px+.
  • Preserve safe-area and keyboard behavior.
  • Use bottom sheets/modals for action confirmation where current UX already does so.

13. Data Display

13.1 Web Tables

AquaTable is the preferred management table wrapper.

Current table style:

  • Wrapped in AntD Card.
  • Card radius 8px.
  • Borderless card with --aquax-shadow-card.
  • Header background --muted.
  • Header text 12-13px, bold, tracking-wide.
  • Cells px-4 py-4, larger on xl.
  • Supports skeleton row loading to reduce layout jump.
  • Supports small updating banner above table.

13.2 Web Cards And Stats

StatsGrid:

  • Responsive grid: md:grid-cols-2, xl:grid-cols-4.
  • Card radius 8px.
  • Value size 30px.
  • Tones: default/slate, primary/teal, warning/brown, danger/red.

13.3 Mobile Cards And Lists

Current card patterns:

Pattern Current Style
Pond cards White background, radius 8px, left accent bar, shadow/elevation, health badge, metric grid.
User cards White background, border #E5E7EB, radius 16px, avatar, badge, status row, chevron.
Problem/ticket cards White cards with severity left border, status/severity pills and metadata rows.
Summary cards White cards with bold value, muted labels and status badges.

Guidelines:

  • Cards should be tappable with Pressable and accessibilityRole="button" where applicable.
  • Important status should appear near title/top row.
  • Use numberOfLines and flexible rows to avoid overflow.

14. Feedback, Loading And Empty States

14.1 Loading

Surface Current Pattern
Web initial data tables Skeleton rows through AquaTable.
Web page/section loading AntD Spin, Skeleton, card loading state.
Mobile app launch Animated logo/progress screen.
Mobile screen loading ActivityIndicator with teal color, often centered.
Mobile refresh RefreshControl with teal #007C6D / #00796B.

14.2 Toasts And Messages

Surface Current Pattern
Web AntD message.success/error, Alert, Modal.
Mobile AppToast with custom success/error/info cards.

Mobile toast tones:

Tone Background Border Icon
Success #ECFDF3 #6CE9A6 Green circular icon.
Error #FEF3F2 #FDA29B Red circular icon.
Info #EFF6FF #93C5FD Blue circular icon.

14.3 Empty / Error States

Current usage:

  • Web uses AntD Empty, Alert, Skeleton.
  • Mobile uses centered muted text, icon boxes and retry/back buttons.
  • Error text is usually red; no-data text is slate/muted.

Guidelines:

  • Empty state should state what is missing, not blame the user.
  • Error state should include retry/back action when recoverable.
  • Loading and updating states should preserve layout where possible.

15. Icons And Assets

Surface Icon Library Usage
Web lucide-react Sidebar, page actions, buttons, status/metadata.
Mobile lucide-react-native Tabs, header bell, cards, status, form affordances.
Mobile AntD RN @ant-design/icons-react-native fonts loaded in AppProviders. Required for AntD RN controls.

Guidelines:

  • Prefer lucide icons for action buttons and navigation.
  • Icon size is commonly 18-24px; mobile header bell uses 26px.
  • Pair unfamiliar icons with labels or tooltips where possible.
  • Maintain stroke width around 2-2.4 for mobile; web around 1.9-2.2.

16. Responsive And Mobile Behavior

16.1 Web

Current responsive behavior:

  • Sidebar becomes top mobile shell on small viewports.
  • Desktop content uses sidebar offset and scrollable content area.
  • Tables may use horizontal scrolling through AntD table scroll props where configured.
  • Page headers stack vertically on small screens and align action buttons on larger screens.

Guidelines:

  • Keep management UI dense but readable.
  • Avoid fixed widths that break table/card content below 320px.
  • Use responsive Tailwind utilities for spacing and grid columns.

16.2 Mobile

Current mobile behavior:

  • Safe-area aware header/tab/content.
  • Compact bottom tab mode for narrow screens and 5-tab roles.
  • Pull-to-refresh on key owner home/data screens.
  • Font shrinking for tab labels via adjustsFontSizeToFit.

Guidelines:

  • Keep touch targets at least 44px.
  • Use one-handed field workflows where possible.
  • Avoid long tab labels.
  • Use hidden stack screens inside tab navigators for detail/create/edit flows.

17. Accessibility Baseline

Current code includes some accessibility primitives:

  • accessibilityRole="button" on mobile custom cards/buttons.
  • aria-label on compact web navigation/sidebar toggle.
  • Tooltips on compact web nav/toggle controls.
  • Focus-visible styles on web sidebar controls.
  • Reduced-motion media handling in web global styles.

Required improvements:

Gap Recommendation
Color-only status indicators Pair with text/icon consistently.
Inconsistent mobile custom controls Add accessibilityRole, labels and disabled state to all custom Pressable controls.
Tables/actions Ensure icon-only actions have labels/tooltips.
Contrast review Verify orange/warning and muted gray combinations against WCAG.
Motion Keep reduced-motion fallbacks for new web animations.

18. Implementation Guidelines

18.1 Web Guidelines

  • Use AntD as base component system.
  • Use ConfigProvider tokens for primary color, radius and font.
  • Use variables.css tokens for colors/radius/shadow.
  • Use Tailwind utilities for layout, spacing and one-off overrides.
  • Use AquaTable for management tables.
  • Use StatsGrid for standard stat summaries.
  • Use AppShell navigation patterns for authenticated pages.
  • Keep business logic out of reusable UI wrappers.

18.2 Mobile Guidelines

  • Use RoleTabNavigator for role tab shells.
  • Use Screen for new simple screens when applicable.
  • Use AppToast for top-level feedback.
  • Use AppButton when its current styling fits; otherwise document deviations.
  • Prefer extracting repeated colors/styles into core/theme only after aligning theme tokens with current AquaX teal palette.
  • Use Pressable with accessibility role for tappable custom cards.

18.3 Copy And Language

  • Current UI is primarily Vietnamese.
  • Use short operational labels:
    • Trang chủ
    • Trang trại
    • Ao nuôi
    • Nhật ký
    • Cá nhân
    • Hoạt động
    • Vô hiệu hóa
    • Cảnh báo
    • Nguy hiểm
  • Keep button text command-oriented: Tạo, Lưu, Cập nhật, Gán, Đóng, Quay lại.

19. Current Design Debt

ID Area Issue Impact Recommendation
DS-DEBT-001 Mobile theme core/theme.primary is blue while most current mobile screens use Aqua teal. New components using theme may look off-brand. Align mobile theme tokens to current AquaX teal palette.
DS-DEBT-002 Token usage Many mobile screens hardcode colors, typography, radius and shadows. Hard to update visual system consistently. Introduce mobile semantic tokens after palette alignment.
DS-DEBT-003 Web token usage Web mixes CSS variables, Tailwind slate classes and hardcoded hex values. Slight inconsistencies in text/border/surface tone. Gradually replace hardcoded common colors with variables.
DS-DEBT-004 Radius consistency Cards vary between 8, 12, 14, 16, 20+ px. UI rhythm varies by feature. Define card/input/modal radius tiers and migrate incrementally.
DS-DEBT-005 Role surfaces Web has broad admin/owner shell, while manager/technician web patterns are limited. Future role pages may improvise styling. Define role-page templates before adding major new web role surfaces.
DS-DEBT-006 AI UI Mobile owner tab has AI support entry point, but production AI UI is not complete. AI UI may diverge when implemented. Define AI chat, confidence, source-reference and fallback components before MVP 3/4.
DS-DEBT-007 Accessibility Custom mobile cards/actions are not uniformly labeled. Assistive tech quality varies. Add accessibility checklist to mobile component DoD.

20. Traceability

Area Source
Web design tokens web/src/assets/styles/variables.css
Web global motion/base styles web/src/assets/styles/tailwind.css, web/src/main.scss
Web AntD theme web/src/main.tsx, web/src/core/config/app.config.ts
Web shell/navigation web/src/core/components/AppShell/*, web/src/core/constants/app-shell.ts
Web table/stat components web/src/core/components/AquaTable/index.tsx, web/src/core/components/StatsGrid/index.tsx
Web form styles web/src/core/constants/user-management-styles.ts
Mobile theme mobile/src/core/theme/*
Mobile providers/toast/button/screen mobile/src/core/components/*
Mobile role navigation mobile/src/core/navigation/*
Mobile owner cards/status mobile/src/features/owner/home/*, mobile/src/features/owner/problems/*
Mobile admin role card mobile/src/features/admin/users/components/AdminUserCard.tsx
Product scope 01_PRD — Product Requirements Document.md, 06_User Stories — Product Backlog.md

21. Document History

Version Date Author Changes
1.0 2026-09-17 Product Design & Frontend Created current-code design system baseline for web and mobile.

End of Design System